package com.example.vendingmachine.mapper;

import com.example.vendingmachine.entity.Slot;
import com.example.vendingmachine.dto.SlotQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 货道数据访问层
 */
@Mapper
public interface SlotMapper {
    /**
     * 查询货道列表
     */
    List<Slot> selectList(SlotQuery query);
    
    /**
     * 根据ID查询货道
     */
    Slot selectById(Long id);
    
    /**
     * 根据编号和设备ID查询货道
     */
    Slot selectByCodeAndMachineId(@Param("code") String code, @Param("machineId") Long machineId);
    
    /**
     * 新增货道
     */
    int insert(Slot slot);
    
    /**
     * 更新货道
     */
    int update(Slot slot);
    
    /**
     * 删除货道
     */
    int deleteById(Long id);
    
    /**
     * 更新货道状态
     */
    int updateStatus(Long id, String status);

    /**
     * 更新货道库存
     */
    int updateStock(@Param("id") Long id, @Param("stock") Integer stock);

    /**
     * 查询设备下的货道数量
     */
    int countByMachineId(Long machineId);

    /**
     * 查询商品关联的货道数量
     */
    int countByProductId(Long productId);
} 